import time                                                 # импортируем модуль
 
class Pupil:                                                # создаем класс
    def __init__(self, Surname, Name, Mark):                # создаем конструктор
        self.Surname = Surname                              # свойство фамилия
        self.Name = Name                                    # свойство имя
        self.Mark = Mark                                    # свойство оценка
 
pupils = []                                                 # список учеников
 
def print_class(pupils):
    ''' 
    Функция, печатающая класс в виде "Фамилия Имя - Оценка" 
    На вход принимает список из объектов Pupil
    '''                            
    for pupil in pupils:                                    # перебираем каждого ученика в списке
        print(pupil.Surname, pupil.Name, "-", pupil.Mark)   # выводим его информацию
    print("\n")
 
def print_five(pupils):
    '''
    Функция, печатающая фамилии отличников (оценка = 5)
    На вход принимает список из объектов Pupil
    '''
    print("Отличники: ")
    for pupil in pupils:            # перебираем каждого ученика в списке
        if pupil.Mark == 5:         # если его оценка - 5
            print(pupil.Surname)    # выводим его фамилию
    print("\n")
 
def find_average(pupils):
    '''
    Функция, считающая среднюю оценку класса
    На вход принимает список из объектов Pupil
    '''
    average = 0                                 # "копилка" всех оценок
    for pupil in pupils:                        # перебираем каждого ученика в списке
        average += pupil.Mark                   # добавляем в "копилку" его оценку          
    average /= len(pupils)                      # считаем среднюю оценку по формуле (сумма оценок)/(количество учеников)
    print("Средняя оценка класса:", average)    # выводим её на экран
 
start_time = time.time()                                    # засекаем начало обработки
with open("pupils.txt", "r", encoding = "utf-8") as file:   # открываем файл на ЧТЕНИЕ
    for line in file:                                       # читаем файл построчно
        data = line.split(" ")                              # считанную линию делим на элементы по пробелам
                                                            # получим список вида ['Фамилия', 'И.', 'Оценка']
        pupil = Pupil(data[0], data[1], int(data[2]))       # создаем объект Pupil из элементов списка
        pupils.append(pupil)                                # добавляем ученика в общий список
 
print_class(pupils)     # печатаем класс
print_five(pupils)      # печатаем отличников
find_average(pupils)    # печатаем среднюю оценку
print("Время выполнения: ", (time.time()-start_time), "секунд") # замеряем время работы со старта
